1.mkdir
簡介
創建文件目錄
語法
mkdir [-p] dirName
參數
-p 確認目錄是否已經存在,若不存在則建立目錄而不會報錯
示例
創建test文件夾及在其中創建new文件夾
$ mkdir -p test/new
2. find
簡介
文件搜索
語法
find path -option [ expression ] [ -exec ? -ok ? command ] ? {} \;
參數
expression表達式默認是 -print
-mount -xdev 只查詢和指定目錄一個文件系統下的文件
-amin n 在過去n分鐘內被讀取過
-anewer file 讀取時間遲于file的文件
-atime n 在過去n天內被讀取得文件
-cmin n 在過去n分鐘被修改過
-cnewer file 比文件file更新的文件
-ctime n 在過去n天內被修改過的文件
-empty 空的文件
-gid n or -group name gid 是 n 或是 group 名稱是 name
-ipath p -path p 路徑符合p的文件,ipath會忽略大小寫
-name name -iname name 文件名符合name的文件,iname忽略大小寫
-size n 文件大小是n單位,b 代表 512 位元組的區塊,c 表示字元數,k 表示 kilo bytes,w 是二個位元組
-type
c 文件類型是c的文件
d 目錄
c 字型裝置工作
b 區塊裝置文件
p 具名貯列
f 一般文件
i 符號連接
s socket
-pid n process id是n的文件
示例
在當前目錄及子目錄以.sh結尾的文件列出來
$ find . -name "*.sh"
在當前目錄及子目錄列出20天內更新過的文件
$ find . -ctime -20
查找前目錄中文件屬主具有讀、寫權限,并且文件所屬組的用戶和其他用戶具有讀權限的文件
$ find . -type f -perm 644 -exec ls -l {} \;
3. awk
簡介
文本處理
語法
awk 'condition { action }' filename
參數
-F 指定字段分隔符
action的相關函數:
toupper():字符轉為大寫
tolower():字符轉為小寫
length():返回字符串長度
substr():返回子字符串
substr($1,2):返回第一個字段,從第2個字符開始一直到結束
substr($1,2,3):返回第一個字段,從第2個字符開始開始后的3個字符
sin():正弦
cos():余弦
sqrt():平方根
rand():隨機數
示例
$ echo "aa bb cc ?dd" | awk -F "bb" '{ print $1}'
aa
$ cat test.txt?
aa ss
dd ff
gg hh
$ cat test.txt | awk '{print NR")", $0}'
1) aa ss
2) dd ff
3) gg hh
$ cat exp.txt?
/stsvc/fms/conf/application.yml
/stsvc/sms/conf/application.yml
/stsvc/tms/conf/application.yml
/root/home/chenfan
/root/home/jhhuang
$ cat exp.txt | awk '/stsvc/ {print $0}' ? ? #包含 stsvc 的行
/stsvc/fms/conf/application.yml
/stsvc/sms/conf/application.yml
/stsvc/tms/conf/application.yml
$ cat exp.txt | awk '/stsvc\/fms/ {print $0}' #包含 stsvc/fms 的行
/stsvc/fms/conf/application.yml
$ cat exp.txt | awk 'NR%2==1 {print $0}' #奇數行
/stsvc/fms/conf/application.yml
/stsvc/tms/conf/application.yml
/root/home/jhhuang
$ echo "aa ss dds" | awk '{ if($3 == "dd") print $0; else print "nothing"}'
nothing
4. sed
簡介
文本處理
語法
sed [-hnV][-e<script>][-f<script文件>][文本文件]
參數
-e<script> 以選項中指定的script來處理輸入的文本文件
-f<script> 以選項中指定的script來處理輸入的文本文件
-h 顯示幫助
-n 僅顯示想script處理后的結果
動作說明:
a 新增,新增的內容出現在下一行
i 插入,插入的內容出現在上一行
c 取代,取代n1,n2之間的行
d 刪除
p 打印,打印選擇的數據,通常與sed -n一起運行
s 取代,就是替換功能
示例
在第二行下面添加Hello
$ sed '2a Hello'
搜索/etc/passwd包含root關鍵字的行
$ nl /etc/passwd| sed -n '/root/p'
刪除/etc/passwd包含root關鍵字的行
$ nl /etc/passwd| sed '/root/d'
搜索/etc/passwd,找到root對應的行,執行后面花括號中的一組命令,每個命令之間用分號分隔,這里把bash替換為blueshell,再輸出這行
$ nl /etc/passwd | sed -n '/root/{s/bash/blueshell/;p;q}'
$ nl /etc/passwd | sed -n '/root/{s/bash/blueshell/;p;q}'
數據的搜索與替換
$ sed 's/要被取代的字串/新的字串/g'
5. uniq
簡介
檢查文件中的重復行列
語法
uniq [-cdu][-f<欄位>][-s<字符位置>][-w<字符位置>][--help][--version][輸入文件][輸出文件]
參數
-c 在列旁邊顯示該行重復次數
-d 僅顯示重復出現的行列
-u 僅顯示出行一次的行列
-f<欄位> 忽略指定的欄位
-s 忽略比較指定的字符
-w<字符位置> 指定要比較的字符
示例
$ cat testfile?
test 30 ?
test 30 ?
test 30 ?
Hello 95 ?
Hello 95 ?
Hello 95 ?
Hello 95 ?
Linux 85 ?
Linux 85?
$ uniq -c testfile ? ? ?#刪除重復行后的內容 ?
3 test 30 ? ? ? ? ? ? #前面的數字的意義為該行共出現了3次 ?
4 Hello 95 ? ? ? ? ? ?#前面的數字的意義為該行共出現了4次 ?
2 Linux 85 ? ? ? ? ? ?#前面的數字的意義為該行共出現了2次?
6. sort
簡介
行列排序
語法
sort [-bcdfimMnr][-o<輸出文件>][-t<分隔字符>][+<起始欄位>-<結束欄位>][--help][--verison][文件]
參數
-b 忽略每行文本前面的空格
-c 檢查文件是否按照順序排序
-d 只處理英文字母。數字和空格,忽略其他字符
-f 排序時,將小寫字母看成大寫字母
-i 只處理040-176之間的ACSII碼
-m 將排序好的文件合并
-M 將前面三個字母按照月份縮寫排序
-n 依照數值的大小排序
-r 以相反的順序排序
-u 唯一,輸出的結果是去重過的
-t<分隔字符> 指定排序時所用的欄位分隔字符
+<起始欄位>-<結束欄位> 以指定的欄位來排序,范圍由起始欄位到結束欄位的前一個欄位
示例
$ cat testfile ? ? ?#testfile文件原有排序 ?
test 30 ?
Hello 95 ?
Linux 85?
$ sort testfile ? ? #重排結果 ?
Hello 95 ?
Linux 85 ?
test 30?
7. tail
簡介
查看文件內容
語法
tail [參數] [文件]?
參數
-f 循環讀取
-q 不顯示處理信息
-v 顯示詳細的處理信息
-c<數目> 顯示的字節數
-n<行數> 顯示文件的尾部 n 行內容
–pid=PID 與-f合用,表示在進程ID,PID死掉之后結束
-q, --quiet, --silent 從不輸出給出文件名的首部
-s, --sleep-interval=S 與-f合用,表示在每次反復的間隔休眠S秒
示例
循環顯示notes.log的文件內容
$ tail -f notes.log
$ tail -f notes.log
8. head
簡介
查看文件開頭部分內容
語法
head [參數] [文件] ?
參數
-q 隱藏文件名
-v 顯示文件名
-c<數目> 顯示的字節數。
-n<行數> 顯示的行數
示例
顯示 notes.log 文件的開頭 5 行
$ head -n 5 runoob_notes.log
9. mkfs
簡介
在特定的分區建立文件系統
語法
mkfs [-V] [-t fstype] [fs-options] filesys [blocks]
參數
device : 預備檢查的硬盤分區,例如:/dev/sda1
-V : 詳細顯示模式
-t : 給定檔案系統的型式,Linux 的預設值為 ext2
-c : 在制做檔案系統前,檢查該partition 是否有壞軌
-l bad_blocks_file : 將有壞軌的block資料加到 bad_blocks_file 里面
block : 給定 block 的大小
示例
在 /dev/hda5 上建一個 msdos 的檔案系統,同時檢查是否有壞軌存在
$ mkfs -V -t msdos -c /dev/hda5
將sda6分區格式化為ext3格式
$ mfks -t ext3 /dev/sda6 ?
10. chmod
簡介
控制文件調用權限
語法
chmod [-cfvR] [--help] [--version] mode file...
參數
mode參數:
[ugoa...][[+-=][rwxX]...][,...]
(1) u 表示該文件的擁有者,g 表示與該文件的擁有者屬于同一個群體(group)者,o 表示其他以外的人,a 表示這三者皆是
(2) + 表示增加權限、- 表示取消權限、= 表示唯一設定權限
(3) r 表示可讀取,w 表示可寫入,x 表示可執行,X 表示只有當該文件是個子目錄或者該文件已經被設定過為可執行
-c : 若該文件權限確實已經更改,才顯示其更改動作
-f : 若該文件權限無法被更改也不要顯示錯誤訊息
-v : 顯示權限變更的詳細資料
-R : 對目前目錄下的所有文件與子目錄進行相同的權限變更(即以遞回的方式逐個變更)
示例
將文件 file1.txt 設為所有人皆可讀取
$ chmod ugo+r file1.txt
#或者
$ chmod a+r file1.txt
將文件 file1.txt 與 file2.txt 設為該文件擁有者,與其所屬同一個群體者可寫入,但其他以外的人則不可寫入
$ chmod ug+w,o-w file1.txt file2.txt